Reinforcement Learning à Epitech

Cette expérience s'inscrit dans le cadre d'un cours dispensé à Epitech Montpellier pour les étudiants de deuxième année de Master (M2), durant le second semestre, à partir de mars 2023. Le cours porte sur l'apprentissage par renforcement (Reinforcement Learning), une sous-discipline de l'intelligence artificielle (IA) centrée sur l'apprentissage par essai-erreur et l'optimisation de stratégies d'action. La pédagogie repose sur une méthodologie orientée projet, avec peu de contenu théorique, et vise principalement la mise en œuvre d'un projet concret. Les enjeux étaient d'amener les étudiants à comprendre les concepts fondamentaux du Reinforcement Learning, ainsi que la démarche scientifique permettant de justifier le choix d'un modèle ou d'un algorithme. Cette initiative impliquait directement les équipes pédagogiques d'Epitech Montpellier.

Tâches & Objectifs

Dans ce cadre, mon rôle consistait d'abord à introduire les bases du Reinforcement Learning, puis à accompagner les étudiants tout au long de la réalisation de leur projet, jusqu'à la restitution finale, attendue sous la forme d'un livrable code et d'une présentation orale. L'objectif pédagogique était triple : permettre aux étudiants de comprendre les fondements conceptuels de cette approche, de concevoir et d'implémenter une solution fonctionnelle, et de pouvoir justifier leurs choix en matière d'algorithmes et de réglages de paramètres. Le critère de réussite principal reposait sur la qualité des retours étudiants : qu'ils aient le sentiment d'avoir réellement appris des choses dans le domaine de la modélisation et de la méthode scientifique.

Actions et Développement

Pour accompagner efficacement les étudiants, j'ai structuré l'enseignement en plusieurs phases. Dès la première session, j'ai proposé une introduction générale aux concepts essentiels du Reinforcement Learning ainsi qu'aux défis technologiques auxquels cette approche apporte une réponse pertinente. Cette session a été suivie de la présentation d'un petit projet d'introduction – appelé « Bootstrap » dans le jargon d'Epitech – dont la correction a été assurée lors de la séance suivante. Ensuite, trois sessions étaient dédiées à l'accompagnement individuel des groupes d'étudiants sur leur projet principal : la résolution du jeu TaxiDriver, un environnement d'entraînement proposé par la bibliothèque Python Gymnasium.

J'ai suivi une démarche d'encadrement pédagogique progressive, en restant présent pour orienter les choix technologiques et méthodologiques des étudiants. Toutefois, j'ai été confronté à un certain nombre de difficultés : nombre d'étudiants avaient tendance à copier-coller des solutions toutes faites sans en comprendre la logique, ce qui les rendait incapables de répondre à des questions techniques ou de défendre leurs choix. Par ailleurs, la simplicité même du problème (TaxiDriver) était problématique : il pouvait être résolu de façon quasi instantanée par presque n'importe quelle combinaison d'algorithme et de paramètres, ce qui masquait les enjeux plus subtils de complexité algorithmique et d'analyse comparative. Ces éléments m'ont conduit à prendre des décisions visant à renforcer l'ancrage des apprentissages, en encourageant l'analyse critique et la reformulation argumentée des choix effectués.

Résultats

Cette approche a porté ses fruits. Dès la première année, j'ai pris l'initiative de produire une correction complète et exemplaire du projet Bootstrap, sous la forme d'un dépôt public sur GitHub. Cette ressource, qui n'avait pas été demandée par Epitech, a été un véritable plus pour les étudiants, qui manquaient jusqu'alors de support pédagogique clair et accessible. J'ai reçu des retours très positifs, relayés tant par les étudiants eux-mêmes que par l'équipe pédagogique locale d'Epitech Montpellier. J'ai également transmis un certain nombre de remarques à l'administration nationale d'Epitech, qui ont été prises en considération car elles recoupaient d'autres retours similaires (comme l'absurdité de vouloir faire du Deep Q-Learning sur un problème aussi petit, ie représentable par une simple matrice).

Sur un plan plus personnel, cette expérience a été l'occasion pour moi d'approfondir mes propres connaissances en Reinforcement Learning, un domaine dans lequel je n'étais initialement pas expert. Le fait de produire un code didactique, pensé pour être partagé et utilisé comme référence, constitue un élément valorisable de mon parcours, tant sur le plan pédagogique que technique.

Stack technique

Les outils techniques mobilisés pour ce projet étaient principalement issus de l'écosystème Python, avec une utilisation poussée des Jupyter Notebooks, très adaptés à l'expérimentation interactive. Les bibliothèques classiques de science des données ont été utilisées (comme NumPy, pandas, Matplotlib), ainsi que le module Gymnasium, qui fournit des environnements simulés pour l'entraînement d'agents intelligents. Cette stack technique permettait une bonne prise en main pour les étudiants tout en restant suffisamment souple pour explorer différents aspects du Reinforcement Learning.